\hypertarget{class_q_c_p_layout_grid}{}\section{Q\+C\+P\+Layout\+Grid Class Reference}
\label{class_q_c_p_layout_grid}\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}


A layout that arranges child elements in a grid.  


Inheritance diagram for Q\+C\+P\+Layout\+Grid\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=6.000000cm]{class_q_c_p_layout_grid}
\end{center}
\end{figure}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{class_q_c_p_layout_grid_ab2a4c1587dc8aed4c41c509c8d8d2a64}{Q\+C\+P\+Layout\+Grid}} ()
\item 
int \mbox{\hyperlink{class_q_c_p_layout_grid_a19c66fd76cbce58a8e94f33797e0c0aa}{row\+Count}} () const
\item 
int \mbox{\hyperlink{class_q_c_p_layout_grid_a1a2962cbf45011405b64b913afa8e7a2}{column\+Count}} () const
\item 
\mbox{\Hypertarget{class_q_c_p_layout_grid_a8e0e587c386bbcd1b94119f5f44c512d}\label{class_q_c_p_layout_grid_a8e0e587c386bbcd1b94119f5f44c512d}} 
Q\+List$<$ double $>$ {\bfseries column\+Stretch\+Factors} () const
\item 
\mbox{\Hypertarget{class_q_c_p_layout_grid_aa33408586427e77e05f79defde7f3568}\label{class_q_c_p_layout_grid_aa33408586427e77e05f79defde7f3568}} 
Q\+List$<$ double $>$ {\bfseries row\+Stretch\+Factors} () const
\item 
\mbox{\Hypertarget{class_q_c_p_layout_grid_adcf4c387d5996bf6e4ae0ed26138247e}\label{class_q_c_p_layout_grid_adcf4c387d5996bf6e4ae0ed26138247e}} 
int {\bfseries column\+Spacing} () const
\item 
\mbox{\Hypertarget{class_q_c_p_layout_grid_a4cb6c680505cd0ce6f85b9e217fd2cd0}\label{class_q_c_p_layout_grid_a4cb6c680505cd0ce6f85b9e217fd2cd0}} 
int {\bfseries row\+Spacing} () const
\item 
void \mbox{\hyperlink{class_q_c_p_layout_grid_ae38f31a71687b9d7ee3104852528fb50}{set\+Column\+Stretch\+Factor}} (int column, double factor)
\item 
void \mbox{\hyperlink{class_q_c_p_layout_grid_a6c2591d1a7e2534ce036989543b49e57}{set\+Column\+Stretch\+Factors}} (const Q\+List$<$ double $>$ \&factors)
\item 
void \mbox{\hyperlink{class_q_c_p_layout_grid_a7b0273de5369bd93d942edbaf5b166ec}{set\+Row\+Stretch\+Factor}} (int row, double factor)
\item 
void \mbox{\hyperlink{class_q_c_p_layout_grid_a200b45f9c908f96ebadaa3c8d87a2782}{set\+Row\+Stretch\+Factors}} (const Q\+List$<$ double $>$ \&factors)
\item 
void \mbox{\hyperlink{class_q_c_p_layout_grid_a3a49272aba32bb0fddc3bb2a45a3dba0}{set\+Column\+Spacing}} (int pixels)
\item 
void \mbox{\hyperlink{class_q_c_p_layout_grid_aaef2cd2d456197ee06a208793678e436}{set\+Row\+Spacing}} (int pixels)
\item 
\mbox{\Hypertarget{class_q_c_p_layout_grid_a07f8dd7d3d61d7345026621d446042a4}\label{class_q_c_p_layout_grid_a07f8dd7d3d61d7345026621d446042a4}} 
virtual void {\bfseries update\+Layout} ()
\item 
virtual int \mbox{\hyperlink{class_q_c_p_layout_grid_a77f194843d037e0da6d5f3170acdf3a2}{element\+Count}} () const
\item 
virtual \mbox{\hyperlink{class_q_c_p_layout_element}{Q\+C\+P\+Layout\+Element}} $\ast$ \mbox{\hyperlink{class_q_c_p_layout_grid_a97672ecc379cb3a09639926ba9980297}{element\+At}} (int index) const
\item 
virtual \mbox{\hyperlink{class_q_c_p_layout_element}{Q\+C\+P\+Layout\+Element}} $\ast$ \mbox{\hyperlink{class_q_c_p_layout_grid_acc1277394ff8a6432e111ff9463e6375}{take\+At}} (int index)
\item 
virtual bool \mbox{\hyperlink{class_q_c_p_layout_grid_a666a9fe9e92054436f9b66eba25cca0c}{take}} (\mbox{\hyperlink{class_q_c_p_layout_element}{Q\+C\+P\+Layout\+Element}} $\ast$\mbox{\hyperlink{class_q_c_p_layout_grid_a602b426609b4411cf6a93c3ddf3a381a}{element}})
\item 
virtual Q\+List$<$ \mbox{\hyperlink{class_q_c_p_layout_element}{Q\+C\+P\+Layout\+Element}} $\ast$ $>$ \mbox{\hyperlink{class_q_c_p_layout_grid_a20a745d013de4c89cf5de8004a5a36f7}{elements}} (bool recursive) const
\item 
virtual void \mbox{\hyperlink{class_q_c_p_layout_grid_a08bba60e4acd20165526a8fd7f986b58}{simplify}} ()
\item 
virtual Q\+Size \mbox{\hyperlink{class_q_c_p_layout_grid_a9ef4b0d626708a1ada2cfea3a5973b80}{minimum\+Size\+Hint}} () const
\item 
virtual Q\+Size \mbox{\hyperlink{class_q_c_p_layout_grid_a3720d1b79931b2bdec3f2158a5f0181c}{maximum\+Size\+Hint}} () const
\item 
\mbox{\hyperlink{class_q_c_p_layout_element}{Q\+C\+P\+Layout\+Element}} $\ast$ \mbox{\hyperlink{class_q_c_p_layout_grid_a602b426609b4411cf6a93c3ddf3a381a}{element}} (int row, int column) const
\item 
bool \mbox{\hyperlink{class_q_c_p_layout_grid_adff1a2ca691ed83d2d24a4cd1fe17012}{add\+Element}} (int row, int column, \mbox{\hyperlink{class_q_c_p_layout_element}{Q\+C\+P\+Layout\+Element}} $\ast$\mbox{\hyperlink{class_q_c_p_layout_grid_a602b426609b4411cf6a93c3ddf3a381a}{element}})
\item 
bool \mbox{\hyperlink{class_q_c_p_layout_grid_ab0cf4f7edc9414a3bfaddac0f46dc0a0}{has\+Element}} (int row, int column)
\item 
void \mbox{\hyperlink{class_q_c_p_layout_grid_a886c0dcbabd51a45da399e044552b685}{expand\+To}} (int new\+Row\+Count, int new\+Column\+Count)
\item 
void \mbox{\hyperlink{class_q_c_p_layout_grid_a48af3dd7c3a653d9c3d7dd99bd02e838}{insert\+Row}} (int new\+Index)
\item 
void \mbox{\hyperlink{class_q_c_p_layout_grid_a1e880a321dbe8b43b471ccd764433dc4}{insert\+Column}} (int new\+Index)
\end{DoxyCompactItemize}
\subsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{class_q_c_p_layout_grid_a4b9a251919936f127a63fc1b9911cd4e}\label{class_q_c_p_layout_grid_a4b9a251919936f127a63fc1b9911cd4e}} 
void {\bfseries get\+Minimum\+Row\+Col\+Sizes} (Q\+Vector$<$ int $>$ $\ast$min\+Col\+Widths, Q\+Vector$<$ int $>$ $\ast$min\+Row\+Heights) const
\item 
\mbox{\Hypertarget{class_q_c_p_layout_grid_a9be77011ec5b5dfbe7fbda126659e1eb}\label{class_q_c_p_layout_grid_a9be77011ec5b5dfbe7fbda126659e1eb}} 
void {\bfseries get\+Maximum\+Row\+Col\+Sizes} (Q\+Vector$<$ int $>$ $\ast$max\+Col\+Widths, Q\+Vector$<$ int $>$ $\ast$max\+Row\+Heights) const
\end{DoxyCompactItemize}
\subsection*{Protected Attributes}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{class_q_c_p_layout_grid_a3577d3855bf8ad20ef9079291a49f397}\label{class_q_c_p_layout_grid_a3577d3855bf8ad20ef9079291a49f397}} 
Q\+List$<$ Q\+List$<$ \mbox{\hyperlink{class_q_c_p_layout_element}{Q\+C\+P\+Layout\+Element}} $\ast$ $>$ $>$ {\bfseries m\+Elements}
\item 
\mbox{\Hypertarget{class_q_c_p_layout_grid_ac6aabe62339f94f18b9f8adab94b1840}\label{class_q_c_p_layout_grid_ac6aabe62339f94f18b9f8adab94b1840}} 
Q\+List$<$ double $>$ {\bfseries m\+Column\+Stretch\+Factors}
\item 
\mbox{\Hypertarget{class_q_c_p_layout_grid_a36c85a7eaf342680fb9b8a4977486f16}\label{class_q_c_p_layout_grid_a36c85a7eaf342680fb9b8a4977486f16}} 
Q\+List$<$ double $>$ {\bfseries m\+Row\+Stretch\+Factors}
\item 
\mbox{\Hypertarget{class_q_c_p_layout_grid_ae9ac48f0791be07ead0a96dbd5622770}\label{class_q_c_p_layout_grid_ae9ac48f0791be07ead0a96dbd5622770}} 
int {\bfseries m\+Column\+Spacing}
\item 
\mbox{\Hypertarget{class_q_c_p_layout_grid_a8b67f183f4645739cc4c794d75843b40}\label{class_q_c_p_layout_grid_a8b67f183f4645739cc4c794d75843b40}} 
int {\bfseries m\+Row\+Spacing}
\end{DoxyCompactItemize}
\subsection*{Additional Inherited Members}


\subsection{Detailed Description}
A layout that arranges child elements in a grid. 

Elements are laid out in a grid with configurable stretch factors (\mbox{\hyperlink{class_q_c_p_layout_grid_ae38f31a71687b9d7ee3104852528fb50}{set\+Column\+Stretch\+Factor}}, \mbox{\hyperlink{class_q_c_p_layout_grid_a7b0273de5369bd93d942edbaf5b166ec}{set\+Row\+Stretch\+Factor}}) and spacing (\mbox{\hyperlink{class_q_c_p_layout_grid_a3a49272aba32bb0fddc3bb2a45a3dba0}{set\+Column\+Spacing}}, \mbox{\hyperlink{class_q_c_p_layout_grid_aaef2cd2d456197ee06a208793678e436}{set\+Row\+Spacing}}).

Elements can be added to cells via \mbox{\hyperlink{class_q_c_p_layout_grid_adff1a2ca691ed83d2d24a4cd1fe17012}{add\+Element}}. The grid is expanded if the specified row or column doesn\textquotesingle{}t exist yet. Whether a cell contains a valid layout element can be checked with \mbox{\hyperlink{class_q_c_p_layout_grid_ab0cf4f7edc9414a3bfaddac0f46dc0a0}{has\+Element}}, that element can be retrieved with \mbox{\hyperlink{class_q_c_p_layout_grid_a602b426609b4411cf6a93c3ddf3a381a}{element}}. If rows and columns that only have empty cells shall be removed, call \mbox{\hyperlink{class_q_c_p_layout_grid_a08bba60e4acd20165526a8fd7f986b58}{simplify}}. Removal of elements is either done by just adding the element to a different layout or by using the \mbox{\hyperlink{class_q_c_p_layout}{Q\+C\+P\+Layout}} interface \mbox{\hyperlink{class_q_c_p_layout_grid_a666a9fe9e92054436f9b66eba25cca0c}{take}} or \mbox{\hyperlink{class_q_c_p_layout_a6c58f537d8086f352576ab7c5b15d0bc}{remove}}.

Row and column insertion can be performed with \mbox{\hyperlink{class_q_c_p_layout_grid_a48af3dd7c3a653d9c3d7dd99bd02e838}{insert\+Row}} and \mbox{\hyperlink{class_q_c_p_layout_grid_a1e880a321dbe8b43b471ccd764433dc4}{insert\+Column}}. 

\subsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{class_q_c_p_layout_grid_ab2a4c1587dc8aed4c41c509c8d8d2a64}\label{class_q_c_p_layout_grid_ab2a4c1587dc8aed4c41c509c8d8d2a64}} 
\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
\subsubsection{\texorpdfstring{Q\+C\+P\+Layout\+Grid()}{QCPLayoutGrid()}}
{\footnotesize\ttfamily Q\+C\+P\+Layout\+Grid\+::\+Q\+C\+P\+Layout\+Grid (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [explicit]}}

Creates an instance of \mbox{\hyperlink{class_q_c_p_layout_grid}{Q\+C\+P\+Layout\+Grid}} and sets default values. 

\subsection{Member Function Documentation}
\mbox{\Hypertarget{class_q_c_p_layout_grid_adff1a2ca691ed83d2d24a4cd1fe17012}\label{class_q_c_p_layout_grid_adff1a2ca691ed83d2d24a4cd1fe17012}} 
\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!add\+Element@{add\+Element}}
\index{add\+Element@{add\+Element}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
\subsubsection{\texorpdfstring{add\+Element()}{addElement()}}
{\footnotesize\ttfamily bool Q\+C\+P\+Layout\+Grid\+::add\+Element (\begin{DoxyParamCaption}\item[{int}]{row,  }\item[{int}]{column,  }\item[{\mbox{\hyperlink{class_q_c_p_layout_element}{Q\+C\+P\+Layout\+Element}} $\ast$}]{element }\end{DoxyParamCaption})}

Adds the {\itshape element} to cell with {\itshape row} and {\itshape column}. If {\itshape element} is already in a layout, it is first removed from there. If {\itshape row} or {\itshape column} don\textquotesingle{}t exist yet, the layout is expanded accordingly.

Returns true if the element was added successfully, i.\+e. if the cell at {\itshape row} and {\itshape column} didn\textquotesingle{}t already have an element.

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{class_q_c_p_layout_grid_a602b426609b4411cf6a93c3ddf3a381a}{element}}, \mbox{\hyperlink{class_q_c_p_layout_grid_ab0cf4f7edc9414a3bfaddac0f46dc0a0}{has\+Element}}, \mbox{\hyperlink{class_q_c_p_layout_grid_a666a9fe9e92054436f9b66eba25cca0c}{take}}, \mbox{\hyperlink{class_q_c_p_layout_a6c58f537d8086f352576ab7c5b15d0bc}{remove}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{class_q_c_p_layout_grid_a1a2962cbf45011405b64b913afa8e7a2}\label{class_q_c_p_layout_grid_a1a2962cbf45011405b64b913afa8e7a2}} 
\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!column\+Count@{column\+Count}}
\index{column\+Count@{column\+Count}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
\subsubsection{\texorpdfstring{column\+Count()}{columnCount()}}
{\footnotesize\ttfamily int Q\+C\+P\+Layout\+Grid\+::column\+Count (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const}

Returns the number of columns in the layout.

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{class_q_c_p_layout_grid_a19c66fd76cbce58a8e94f33797e0c0aa}{row\+Count}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{class_q_c_p_layout_grid_a602b426609b4411cf6a93c3ddf3a381a}\label{class_q_c_p_layout_grid_a602b426609b4411cf6a93c3ddf3a381a}} 
\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!element@{element}}
\index{element@{element}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
\subsubsection{\texorpdfstring{element()}{element()}}
{\footnotesize\ttfamily \mbox{\hyperlink{class_q_c_p_layout_element}{Q\+C\+P\+Layout\+Element}} $\ast$ Q\+C\+P\+Layout\+Grid\+::element (\begin{DoxyParamCaption}\item[{int}]{row,  }\item[{int}]{column }\end{DoxyParamCaption}) const}

Returns the element in the cell in {\itshape row} and {\itshape column}.

Returns 0 if either the row/column is invalid or if the cell is empty. In those cases, a q\+Debug message is printed. To check whether a cell exists and isn\textquotesingle{}t empty, use \mbox{\hyperlink{class_q_c_p_layout_grid_ab0cf4f7edc9414a3bfaddac0f46dc0a0}{has\+Element}}.

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{class_q_c_p_layout_grid_adff1a2ca691ed83d2d24a4cd1fe17012}{add\+Element}}, \mbox{\hyperlink{class_q_c_p_layout_grid_ab0cf4f7edc9414a3bfaddac0f46dc0a0}{has\+Element}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{class_q_c_p_layout_grid_a97672ecc379cb3a09639926ba9980297}\label{class_q_c_p_layout_grid_a97672ecc379cb3a09639926ba9980297}} 
\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!element\+At@{element\+At}}
\index{element\+At@{element\+At}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
\subsubsection{\texorpdfstring{element\+At()}{elementAt()}}
{\footnotesize\ttfamily \mbox{\hyperlink{class_q_c_p_layout_element}{Q\+C\+P\+Layout\+Element}} $\ast$ Q\+C\+P\+Layout\+Grid\+::element\+At (\begin{DoxyParamCaption}\item[{int}]{index }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}

Returns the element in the cell with the given {\itshape index}. If {\itshape index} is invalid, returns 0.

Note that even if {\itshape index} is valid, the respective cell may be empty in some layouts (e.\+g. \mbox{\hyperlink{class_q_c_p_layout_grid}{Q\+C\+P\+Layout\+Grid}}), so this function may return 0 in those cases. You may use this function to check whether a cell is empty or not.

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{class_q_c_p_layout_grid_a20a745d013de4c89cf5de8004a5a36f7}{elements}}, \mbox{\hyperlink{class_q_c_p_layout_grid_a77f194843d037e0da6d5f3170acdf3a2}{element\+Count}}, \mbox{\hyperlink{class_q_c_p_layout_grid_acc1277394ff8a6432e111ff9463e6375}{take\+At}} 
\end{DoxySeeAlso}


Implements \mbox{\hyperlink{class_q_c_p_layout_afa73ca7d859f8a3ee5c73c9b353d2a56}{Q\+C\+P\+Layout}}.

\mbox{\Hypertarget{class_q_c_p_layout_grid_a77f194843d037e0da6d5f3170acdf3a2}\label{class_q_c_p_layout_grid_a77f194843d037e0da6d5f3170acdf3a2}} 
\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!element\+Count@{element\+Count}}
\index{element\+Count@{element\+Count}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
\subsubsection{\texorpdfstring{element\+Count()}{elementCount()}}
{\footnotesize\ttfamily int Q\+C\+P\+Layout\+Grid\+::element\+Count (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}

Returns the number of elements/cells in the layout.

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{class_q_c_p_layout_grid_a20a745d013de4c89cf5de8004a5a36f7}{elements}}, \mbox{\hyperlink{class_q_c_p_layout_grid_a97672ecc379cb3a09639926ba9980297}{element\+At}} 
\end{DoxySeeAlso}


Implements \mbox{\hyperlink{class_q_c_p_layout_a39d3e9ef5d9b82ab1885ba1cb9597e56}{Q\+C\+P\+Layout}}.

\mbox{\Hypertarget{class_q_c_p_layout_grid_a20a745d013de4c89cf5de8004a5a36f7}\label{class_q_c_p_layout_grid_a20a745d013de4c89cf5de8004a5a36f7}} 
\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!elements@{elements}}
\index{elements@{elements}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
\subsubsection{\texorpdfstring{elements()}{elements()}}
{\footnotesize\ttfamily Q\+List$<$ \mbox{\hyperlink{class_q_c_p_layout_element}{Q\+C\+P\+Layout\+Element}} $\ast$ $>$ Q\+C\+P\+Layout\+Grid\+::elements (\begin{DoxyParamCaption}\item[{bool}]{recursive }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}

Returns a list of all child elements in this layout element. If {\itshape recursive} is true, all sub-\/child elements are included in the list, too.

\begin{DoxyWarning}{Warning}
There may be entries with value 0 in the returned list. (For example, \mbox{\hyperlink{class_q_c_p_layout_grid}{Q\+C\+P\+Layout\+Grid}} may have empty cells which yield 0 at the respective index.) 
\end{DoxyWarning}


Reimplemented from \mbox{\hyperlink{class_q_c_p_layout_adc9ebc73fc215f9cc22796712a251ff4}{Q\+C\+P\+Layout}}.

\mbox{\Hypertarget{class_q_c_p_layout_grid_a886c0dcbabd51a45da399e044552b685}\label{class_q_c_p_layout_grid_a886c0dcbabd51a45da399e044552b685}} 
\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!expand\+To@{expand\+To}}
\index{expand\+To@{expand\+To}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
\subsubsection{\texorpdfstring{expand\+To()}{expandTo()}}
{\footnotesize\ttfamily void Q\+C\+P\+Layout\+Grid\+::expand\+To (\begin{DoxyParamCaption}\item[{int}]{new\+Row\+Count,  }\item[{int}]{new\+Column\+Count }\end{DoxyParamCaption})}

Expands the layout to have {\itshape new\+Row\+Count} rows and {\itshape new\+Column\+Count} columns. So the last valid row index will be {\itshape new\+Row\+Count-\/1}, the last valid column index will be {\itshape new\+Column\+Count-\/1}.

If the current column/row count is already larger or equal to {\itshape new\+Column\+Count/{\itshape new\+Row\+Count},} this function does nothing in that dimension.

Newly created cells are empty, new rows and columns have the stretch factor 1.

Note that upon a call to \mbox{\hyperlink{class_q_c_p_layout_grid_adff1a2ca691ed83d2d24a4cd1fe17012}{add\+Element}}, the layout is expanded automatically to contain the specified row and column, using this function.

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{class_q_c_p_layout_grid_a08bba60e4acd20165526a8fd7f986b58}{simplify}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{class_q_c_p_layout_grid_ab0cf4f7edc9414a3bfaddac0f46dc0a0}\label{class_q_c_p_layout_grid_ab0cf4f7edc9414a3bfaddac0f46dc0a0}} 
\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!has\+Element@{has\+Element}}
\index{has\+Element@{has\+Element}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
\subsubsection{\texorpdfstring{has\+Element()}{hasElement()}}
{\footnotesize\ttfamily bool Q\+C\+P\+Layout\+Grid\+::has\+Element (\begin{DoxyParamCaption}\item[{int}]{row,  }\item[{int}]{column }\end{DoxyParamCaption})}

Returns whether the cell at {\itshape row} and {\itshape column} exists and contains a valid element, i.\+e. isn\textquotesingle{}t empty.

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{class_q_c_p_layout_grid_a602b426609b4411cf6a93c3ddf3a381a}{element}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{class_q_c_p_layout_grid_a1e880a321dbe8b43b471ccd764433dc4}\label{class_q_c_p_layout_grid_a1e880a321dbe8b43b471ccd764433dc4}} 
\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!insert\+Column@{insert\+Column}}
\index{insert\+Column@{insert\+Column}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
\subsubsection{\texorpdfstring{insert\+Column()}{insertColumn()}}
{\footnotesize\ttfamily void Q\+C\+P\+Layout\+Grid\+::insert\+Column (\begin{DoxyParamCaption}\item[{int}]{new\+Index }\end{DoxyParamCaption})}

Inserts a new column with empty cells at the column index {\itshape new\+Index}. Valid values for {\itshape new\+Index} range from 0 (inserts a row at the left) to {\itshape row\+Count} (appends a row at the right).

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{class_q_c_p_layout_grid_a48af3dd7c3a653d9c3d7dd99bd02e838}{insert\+Row}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{class_q_c_p_layout_grid_a48af3dd7c3a653d9c3d7dd99bd02e838}\label{class_q_c_p_layout_grid_a48af3dd7c3a653d9c3d7dd99bd02e838}} 
\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!insert\+Row@{insert\+Row}}
\index{insert\+Row@{insert\+Row}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
\subsubsection{\texorpdfstring{insert\+Row()}{insertRow()}}
{\footnotesize\ttfamily void Q\+C\+P\+Layout\+Grid\+::insert\+Row (\begin{DoxyParamCaption}\item[{int}]{new\+Index }\end{DoxyParamCaption})}

Inserts a new row with empty cells at the row index {\itshape new\+Index}. Valid values for {\itshape new\+Index} range from 0 (inserts a row at the top) to {\itshape row\+Count} (appends a row at the bottom).

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{class_q_c_p_layout_grid_a1e880a321dbe8b43b471ccd764433dc4}{insert\+Column}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{class_q_c_p_layout_grid_a3720d1b79931b2bdec3f2158a5f0181c}\label{class_q_c_p_layout_grid_a3720d1b79931b2bdec3f2158a5f0181c}} 
\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!maximum\+Size\+Hint@{maximum\+Size\+Hint}}
\index{maximum\+Size\+Hint@{maximum\+Size\+Hint}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
\subsubsection{\texorpdfstring{maximum\+Size\+Hint()}{maximumSizeHint()}}
{\footnotesize\ttfamily Q\+Size Q\+C\+P\+Layout\+Grid\+::maximum\+Size\+Hint (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}

Returns the maximum size this layout element (the inner \mbox{\hyperlink{class_q_c_p_layout_element_a208effccfe2cca4a0eaf9393e60f2dd4}{rect}}) may be expanded to.

if a maximum size (\mbox{\hyperlink{class_q_c_p_layout_element_a74eb5280a737ab44833d506db65efd95}{set\+Maximum\+Size}}) was not set manually, parent layouts consult this function to determine the maximum allowed size of this layout element. (A manual maximum size is considered set if it is smaller than Qt\textquotesingle{}s Q\+W\+I\+D\+G\+E\+T\+S\+I\+Z\+E\+\_\+\+M\+AX.) 

Reimplemented from \mbox{\hyperlink{class_q_c_p_layout_element_ab5ce2ba22b36d9a3b70a1be562c326e5}{Q\+C\+P\+Layout\+Element}}.

\mbox{\Hypertarget{class_q_c_p_layout_grid_a9ef4b0d626708a1ada2cfea3a5973b80}\label{class_q_c_p_layout_grid_a9ef4b0d626708a1ada2cfea3a5973b80}} 
\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!minimum\+Size\+Hint@{minimum\+Size\+Hint}}
\index{minimum\+Size\+Hint@{minimum\+Size\+Hint}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
\subsubsection{\texorpdfstring{minimum\+Size\+Hint()}{minimumSizeHint()}}
{\footnotesize\ttfamily Q\+Size Q\+C\+P\+Layout\+Grid\+::minimum\+Size\+Hint (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}

Returns the minimum size this layout element (the inner \mbox{\hyperlink{class_q_c_p_layout_element_a208effccfe2cca4a0eaf9393e60f2dd4}{rect}}) may be compressed to.

if a minimum size (\mbox{\hyperlink{class_q_c_p_layout_element_a5dd29a3c8bc88440c97c06b67be7886b}{set\+Minimum\+Size}}) was not set manually, parent layouts consult this function to determine the minimum allowed size of this layout element. (A manual minimum size is considered set if it is non-\/zero.) 

Reimplemented from \mbox{\hyperlink{class_q_c_p_layout_element_ab3fdb5c9a5189bb2dac10d4d25329cd8}{Q\+C\+P\+Layout\+Element}}.

\mbox{\Hypertarget{class_q_c_p_layout_grid_a19c66fd76cbce58a8e94f33797e0c0aa}\label{class_q_c_p_layout_grid_a19c66fd76cbce58a8e94f33797e0c0aa}} 
\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!row\+Count@{row\+Count}}
\index{row\+Count@{row\+Count}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
\subsubsection{\texorpdfstring{row\+Count()}{rowCount()}}
{\footnotesize\ttfamily int Q\+C\+P\+Layout\+Grid\+::row\+Count (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const}

Returns the number of rows in the layout.

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{class_q_c_p_layout_grid_a1a2962cbf45011405b64b913afa8e7a2}{column\+Count}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{class_q_c_p_layout_grid_a3a49272aba32bb0fddc3bb2a45a3dba0}\label{class_q_c_p_layout_grid_a3a49272aba32bb0fddc3bb2a45a3dba0}} 
\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!set\+Column\+Spacing@{set\+Column\+Spacing}}
\index{set\+Column\+Spacing@{set\+Column\+Spacing}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
\subsubsection{\texorpdfstring{set\+Column\+Spacing()}{setColumnSpacing()}}
{\footnotesize\ttfamily void Q\+C\+P\+Layout\+Grid\+::set\+Column\+Spacing (\begin{DoxyParamCaption}\item[{int}]{pixels }\end{DoxyParamCaption})}

Sets the gap that is left blank between columns to {\itshape pixels}.

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{class_q_c_p_layout_grid_aaef2cd2d456197ee06a208793678e436}{set\+Row\+Spacing}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{class_q_c_p_layout_grid_ae38f31a71687b9d7ee3104852528fb50}\label{class_q_c_p_layout_grid_ae38f31a71687b9d7ee3104852528fb50}} 
\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!set\+Column\+Stretch\+Factor@{set\+Column\+Stretch\+Factor}}
\index{set\+Column\+Stretch\+Factor@{set\+Column\+Stretch\+Factor}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
\subsubsection{\texorpdfstring{set\+Column\+Stretch\+Factor()}{setColumnStretchFactor()}}
{\footnotesize\ttfamily void Q\+C\+P\+Layout\+Grid\+::set\+Column\+Stretch\+Factor (\begin{DoxyParamCaption}\item[{int}]{column,  }\item[{double}]{factor }\end{DoxyParamCaption})}

Sets the stretch {\itshape factor} of {\itshape column}.

Stretch factors control the relative sizes of rows and columns. Cells will not be resized beyond their minimum and maximum widths/heights (\mbox{\hyperlink{class_q_c_p_layout_element_a5dd29a3c8bc88440c97c06b67be7886b}{Q\+C\+P\+Layout\+Element\+::set\+Minimum\+Size}}, \mbox{\hyperlink{class_q_c_p_layout_element_a74eb5280a737ab44833d506db65efd95}{Q\+C\+P\+Layout\+Element\+::set\+Maximum\+Size}}), regardless of the stretch factor.

The default stretch factor of newly created rows/columns is 1.

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{class_q_c_p_layout_grid_a6c2591d1a7e2534ce036989543b49e57}{set\+Column\+Stretch\+Factors}}, \mbox{\hyperlink{class_q_c_p_layout_grid_a7b0273de5369bd93d942edbaf5b166ec}{set\+Row\+Stretch\+Factor}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{class_q_c_p_layout_grid_a6c2591d1a7e2534ce036989543b49e57}\label{class_q_c_p_layout_grid_a6c2591d1a7e2534ce036989543b49e57}} 
\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!set\+Column\+Stretch\+Factors@{set\+Column\+Stretch\+Factors}}
\index{set\+Column\+Stretch\+Factors@{set\+Column\+Stretch\+Factors}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
\subsubsection{\texorpdfstring{set\+Column\+Stretch\+Factors()}{setColumnStretchFactors()}}
{\footnotesize\ttfamily void Q\+C\+P\+Layout\+Grid\+::set\+Column\+Stretch\+Factors (\begin{DoxyParamCaption}\item[{const Q\+List$<$ double $>$ \&}]{factors }\end{DoxyParamCaption})}

Sets the stretch {\itshape factors} of all columns. {\itshape factors} must have the size \mbox{\hyperlink{class_q_c_p_layout_grid_a1a2962cbf45011405b64b913afa8e7a2}{column\+Count}}.

Stretch factors control the relative sizes of rows and columns. Cells will not be resized beyond their minimum and maximum widths/heights (\mbox{\hyperlink{class_q_c_p_layout_element_a5dd29a3c8bc88440c97c06b67be7886b}{Q\+C\+P\+Layout\+Element\+::set\+Minimum\+Size}}, \mbox{\hyperlink{class_q_c_p_layout_element_a74eb5280a737ab44833d506db65efd95}{Q\+C\+P\+Layout\+Element\+::set\+Maximum\+Size}}), regardless of the stretch factor.

The default stretch factor of newly created rows/columns is 1.

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{class_q_c_p_layout_grid_ae38f31a71687b9d7ee3104852528fb50}{set\+Column\+Stretch\+Factor}}, \mbox{\hyperlink{class_q_c_p_layout_grid_a200b45f9c908f96ebadaa3c8d87a2782}{set\+Row\+Stretch\+Factors}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{class_q_c_p_layout_grid_aaef2cd2d456197ee06a208793678e436}\label{class_q_c_p_layout_grid_aaef2cd2d456197ee06a208793678e436}} 
\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!set\+Row\+Spacing@{set\+Row\+Spacing}}
\index{set\+Row\+Spacing@{set\+Row\+Spacing}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
\subsubsection{\texorpdfstring{set\+Row\+Spacing()}{setRowSpacing()}}
{\footnotesize\ttfamily void Q\+C\+P\+Layout\+Grid\+::set\+Row\+Spacing (\begin{DoxyParamCaption}\item[{int}]{pixels }\end{DoxyParamCaption})}

Sets the gap that is left blank between rows to {\itshape pixels}.

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{class_q_c_p_layout_grid_a3a49272aba32bb0fddc3bb2a45a3dba0}{set\+Column\+Spacing}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{class_q_c_p_layout_grid_a7b0273de5369bd93d942edbaf5b166ec}\label{class_q_c_p_layout_grid_a7b0273de5369bd93d942edbaf5b166ec}} 
\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!set\+Row\+Stretch\+Factor@{set\+Row\+Stretch\+Factor}}
\index{set\+Row\+Stretch\+Factor@{set\+Row\+Stretch\+Factor}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
\subsubsection{\texorpdfstring{set\+Row\+Stretch\+Factor()}{setRowStretchFactor()}}
{\footnotesize\ttfamily void Q\+C\+P\+Layout\+Grid\+::set\+Row\+Stretch\+Factor (\begin{DoxyParamCaption}\item[{int}]{row,  }\item[{double}]{factor }\end{DoxyParamCaption})}

Sets the stretch {\itshape factor} of {\itshape row}.

Stretch factors control the relative sizes of rows and columns. Cells will not be resized beyond their minimum and maximum widths/heights (\mbox{\hyperlink{class_q_c_p_layout_element_a5dd29a3c8bc88440c97c06b67be7886b}{Q\+C\+P\+Layout\+Element\+::set\+Minimum\+Size}}, \mbox{\hyperlink{class_q_c_p_layout_element_a74eb5280a737ab44833d506db65efd95}{Q\+C\+P\+Layout\+Element\+::set\+Maximum\+Size}}), regardless of the stretch factor.

The default stretch factor of newly created rows/columns is 1.

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{class_q_c_p_layout_grid_a6c2591d1a7e2534ce036989543b49e57}{set\+Column\+Stretch\+Factors}}, \mbox{\hyperlink{class_q_c_p_layout_grid_a7b0273de5369bd93d942edbaf5b166ec}{set\+Row\+Stretch\+Factor}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{class_q_c_p_layout_grid_a200b45f9c908f96ebadaa3c8d87a2782}\label{class_q_c_p_layout_grid_a200b45f9c908f96ebadaa3c8d87a2782}} 
\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!set\+Row\+Stretch\+Factors@{set\+Row\+Stretch\+Factors}}
\index{set\+Row\+Stretch\+Factors@{set\+Row\+Stretch\+Factors}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
\subsubsection{\texorpdfstring{set\+Row\+Stretch\+Factors()}{setRowStretchFactors()}}
{\footnotesize\ttfamily void Q\+C\+P\+Layout\+Grid\+::set\+Row\+Stretch\+Factors (\begin{DoxyParamCaption}\item[{const Q\+List$<$ double $>$ \&}]{factors }\end{DoxyParamCaption})}

Sets the stretch {\itshape factors} of all rows. {\itshape factors} must have the size \mbox{\hyperlink{class_q_c_p_layout_grid_a19c66fd76cbce58a8e94f33797e0c0aa}{row\+Count}}.

Stretch factors control the relative sizes of rows and columns. Cells will not be resized beyond their minimum and maximum widths/heights (\mbox{\hyperlink{class_q_c_p_layout_element_a5dd29a3c8bc88440c97c06b67be7886b}{Q\+C\+P\+Layout\+Element\+::set\+Minimum\+Size}}, \mbox{\hyperlink{class_q_c_p_layout_element_a74eb5280a737ab44833d506db65efd95}{Q\+C\+P\+Layout\+Element\+::set\+Maximum\+Size}}), regardless of the stretch factor.

The default stretch factor of newly created rows/columns is 1.

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{class_q_c_p_layout_grid_a7b0273de5369bd93d942edbaf5b166ec}{set\+Row\+Stretch\+Factor}}, \mbox{\hyperlink{class_q_c_p_layout_grid_a6c2591d1a7e2534ce036989543b49e57}{set\+Column\+Stretch\+Factors}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{class_q_c_p_layout_grid_a08bba60e4acd20165526a8fd7f986b58}\label{class_q_c_p_layout_grid_a08bba60e4acd20165526a8fd7f986b58}} 
\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!simplify@{simplify}}
\index{simplify@{simplify}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
\subsubsection{\texorpdfstring{simplify()}{simplify()}}
{\footnotesize\ttfamily void Q\+C\+P\+Layout\+Grid\+::simplify (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}

Simplifies the layout by collapsing rows and columns which only contain empty cells. 

Reimplemented from \mbox{\hyperlink{class_q_c_p_layout_a41e6ac049143866e8f8b4964efab01b2}{Q\+C\+P\+Layout}}.

\mbox{\Hypertarget{class_q_c_p_layout_grid_a666a9fe9e92054436f9b66eba25cca0c}\label{class_q_c_p_layout_grid_a666a9fe9e92054436f9b66eba25cca0c}} 
\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!take@{take}}
\index{take@{take}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
\subsubsection{\texorpdfstring{take()}{take()}}
{\footnotesize\ttfamily bool Q\+C\+P\+Layout\+Grid\+::take (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{class_q_c_p_layout_element}{Q\+C\+P\+Layout\+Element}} $\ast$}]{element }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}

Removes the specified {\itshape element} from the layout and returns true on success.

If the {\itshape element} isn\textquotesingle{}t in this layout, returns false.

Note that some layouts don\textquotesingle{}t remove the respective cell right away but leave an empty cell after successful removal of the layout element. To collapse empty cells, use \mbox{\hyperlink{class_q_c_p_layout_grid_a08bba60e4acd20165526a8fd7f986b58}{simplify}}.

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{class_q_c_p_layout_grid_acc1277394ff8a6432e111ff9463e6375}{take\+At}} 
\end{DoxySeeAlso}


Implements \mbox{\hyperlink{class_q_c_p_layout_ada26cd17e56472b0b4d7fbbc96873e4c}{Q\+C\+P\+Layout}}.

\mbox{\Hypertarget{class_q_c_p_layout_grid_acc1277394ff8a6432e111ff9463e6375}\label{class_q_c_p_layout_grid_acc1277394ff8a6432e111ff9463e6375}} 
\index{Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}!take\+At@{take\+At}}
\index{take\+At@{take\+At}!Q\+C\+P\+Layout\+Grid@{Q\+C\+P\+Layout\+Grid}}
\subsubsection{\texorpdfstring{take\+At()}{takeAt()}}
{\footnotesize\ttfamily \mbox{\hyperlink{class_q_c_p_layout_element}{Q\+C\+P\+Layout\+Element}} $\ast$ Q\+C\+P\+Layout\+Grid\+::take\+At (\begin{DoxyParamCaption}\item[{int}]{index }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}

Removes the element with the given {\itshape index} from the layout and returns it.

If the {\itshape index} is invalid or the cell with that index is empty, returns 0.

Note that some layouts don\textquotesingle{}t remove the respective cell right away but leave an empty cell after successful removal of the layout element. To collapse empty cells, use \mbox{\hyperlink{class_q_c_p_layout_grid_a08bba60e4acd20165526a8fd7f986b58}{simplify}}.

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{class_q_c_p_layout_grid_a97672ecc379cb3a09639926ba9980297}{element\+At}}, \mbox{\hyperlink{class_q_c_p_layout_grid_a666a9fe9e92054436f9b66eba25cca0c}{take}} 
\end{DoxySeeAlso}


Implements \mbox{\hyperlink{class_q_c_p_layout_a5a79621fa0a6eabb8b520cfc04fb601a}{Q\+C\+P\+Layout}}.



The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item 
R\+:/\+Develop/a0-\/develop/\+Lib\+Q\+Qt/src/charts/qcustomplot/\mbox{\hyperlink{qcustomplot_8h}{qcustomplot.\+h}}\item 
R\+:/\+Develop/a0-\/develop/\+Lib\+Q\+Qt/src/charts/qcustomplot/\mbox{\hyperlink{qcustomplot_8cpp}{qcustomplot.\+cpp}}\end{DoxyCompactItemize}
